নিচে স্প্রিং বুট ক্লায়েন্টে (Spring Boot Client) RestTemplate ব্যবহার করে একটি উদাহরণ দেখানো হয়েছে:
১. প্রজেক্ট তৈরি করুন
Spring Initializr-এ যান এবং Spring Boot Starter Web ডিপেনডেন্সি যুক্ত করে একটি নতুন প্রজেক্ট তৈরি করুন। এরপরে প্রজেক্টে RestTemplate ব্যবহার করা হবে।
২. pom.xml ডিপেনডেন্সি যুক্ত করুন
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
৩. RestTemplate কনফিগারেশন
RestTemplate ব্যবহারের জন্য একটি @Bean কনফিগারেশন তৈরি করুন।
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
৪. RestTemplate ব্যবহার করে ক্লায়েন্ট ক্লাস তৈরি করুন
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class ApiClient {
private final RestTemplate restTemplate;
public ApiClient(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
// GET রিকোয়েস্ট
public String getData(String url) {
return restTemplate.getForObject(url, String.class);
}
// POST রিকোয়েস্ট
public String postData(String url, Object requestBody) {
return restTemplate.postForObject(url, requestBody, String.class);
}
}
৫. Controller ক্লাস
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ClientController {
private final ApiClient apiClient;
public ClientController(ApiClient apiClient) {
this.apiClient = apiClient;
}
// GET রিকোয়েস্ট
@GetMapping("/fetch-data")
public String fetchData() {
String url = "https://jsonplaceholder.typicode.com/posts/1"; // উদাহরণ API URL
return apiClient.getData(url);
}
// POST রিকোয়েস্ট
@PostMapping("/send-data")
public String sendData(@RequestBody Object requestBody) {
String url = "https://jsonplaceholder.typicode.com/posts"; // উদাহরণ API URL
return apiClient.postData(url, requestBody);
}
}
৬. GET এবং POST রিকোয়েস্ট টেস্ট করুন
GET রিকোয়েস্ট টেস্ট:
- API Endpoint:
http://localhost:8080/fetch-data - এটি
https://jsonplaceholder.typicode.com/posts/1থেকে ডেটা রিট্রিভ করবে।
POST রিকোয়েস্ট টেস্ট:
- API Endpoint:
http://localhost:8080/send-data Request Body (JSON):
{ "title": "foo", "body": "bar", "userId": 1 }- এটি
https://jsonplaceholder.typicode.com/postsAPI-তে POST করবে এবং রেসপন্স ফিরিয়ে দেবে।
৭. Error Handling
RestTemplate ব্যবহার করার সময় try-catch ব্লক দিয়ে এক্সসেপশন হ্যান্ডেল করুন:
public String getData(String url) {
try {
return restTemplate.getForObject(url, String.class);
} catch (Exception e) {
return "Error occurred: " + e.getMessage();
}
}
৮. উদাহরণ রেসপন্স
GET রেসপন্স:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
POST রেসপন্স:
{
"id": 101,
"title": "foo",
"body": "bar",
"userId": 1
}
RestTemplate ব্যবহার করার সুবিধা:
- সহজ ও ব্যবহারবান্ধব।
- স্প্রিং বুটে আগে থেকেই অন্তর্ভুক্ত।
- GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড সমর্থন করে।
তবে, নতুন প্রোজেক্টে স্প্রিং বুট ২.৪+ এ
WebClientব্যবহার করাই সুপারিশ করা হয়।RestTemplateমূলতblockingএবংsynchronousকাজ করে।
Content added By
Read more